package com.mlog.njyjy.ndop.msg.admin.service;

import com.mlog.njyjy.ndop.msg.common.domain.Flow;
import com.mlog.njyjy.ndop.msg.common.domain.NodeItem;

import java.util.List;

/**
 * <p>
 *
 * </p>
 *
 * @author zyz
 * @version v1.0, 2020/8/11
 */
public interface FlowManagerService {

    /**
     * 列出所有流程
     *
     * @return
     */
    List<Flow> list();

    /**
     * 创建或者更新一个流程
     *
     * @param flow
     * @return
     */
    Flow save(Flow flow);

    /**
     * 导入流程配置文件
     *
     * @param sourceBytes
     * @return
     */
    List<Flow> importFlow(byte[] sourceBytes);

    /**
     * 移除一个流程
     *
     * @param id
     * @return
     */
    boolean remove(Long id);

    /**
     * 新增或者修改流程节点配置
     *
     * @param flowId
     * @param nodeItemList
     * @return
     */
    boolean saveNodes(Long flowId, List<NodeItem> nodeItemList);

    /**
     * 查找流程中的所有节点
     *
     * @param flowId
     * @return
     */
    List<NodeItem> findByFlow(Long flowId);

    /**
     * 移除流程中的所有节点
     *
     * @param flowId
     * @return
     */
    boolean removeByFlow(Long flowId);

    /**
     * 移除流程中的单个节点
     *
     * @param id
     * @return
     */
    boolean removeNode(Long id);

    /**
     * 添加流程中的单个节点
     *
     * @param nodeItem
     * @return
     */
    boolean addNode(NodeItem nodeItem);

}
